Computing systems have made significant contributions toward the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous devices, such as desktop personal computers (PCs), laptop PCs, tablet PCs, netbooks, smart phones, servers, and the like have facilitated increased productivity and reduced costs in communicating and analyzing data in most areas of entertainment, education, business, and science. One common aspect of computing systems is the device driver. Device drivers provide the interface between the software and the hardware of the computing sys.
The device drivers typically have a multi-layer architecture that receives device agnostic commands and data from user applications and/or an operating system and provides device specific electrical signals to control operation of one or more specific devices. Similarly, the device driver typically also receives device specific electrical signals from one or more specific devices and output device agnostic data and commands to user applications and/or the operating system.
Referring to FIG. 1, an audio device driver architecture, according to the conventional art, is shown. At the operating system level, a Windows port class audio driver 110 includes a WaveRT Port 120 and a Topology Port 130 of a port class driver. The WaveRT Port specifies what audio streams (e.g., format) are supported. The Topology Port deals, with the output format such as how many jacks/ports are included in the hardware, how they are coupled, status such as muted or not, if something plugged into the jack/port, and/or the like. The WaveRT Port 120 communicatively couples to a WaveRT Miniport 140 of an Adapter Driver 140, while the Topology Port 130 communicatively couples to a Topology Miniport 150 of the Adapter driver 160. The Adapter Driver 160 sends and receives applicable electric signals to and from the audio hardware 170.
The conventional audio driver architecture, as illustrated in FIG. 1, makes it difficult for hardware manufactures and software developers to independently create analog audio codec solutions. Accordingly, there is a continuing need for an improved audio driver architecture.